Policy driven storage hardware allocation

ABSTRACT

Methods, computing systems and computer program products implement embodiments of the present invention that include assigning multiple storage resources to a reserve pool, and defining one or more storage policy parameters that include allocation policies and deallocation policy parameters. A software defined storage (SDS) controller is initialized by allocating, from the reserve pool, one or more of the storage resources to the SDS controller, and a current state of the SDS controller is monitored. In a first embodiment, upon detecting that the state of the SDS controller meets a given allocation policy parameter, an additional storage resource from the reserve pool is allocated from the reserve pool to the SDS controller. In a second embodiment, upon detecting that the state of the SDS controller meets a given deallocation policy parameter, a given the SDS controller is deallocated from the SDS controller and released back to the storage pool.

FIELD OF THE INVENTION

The present invention relates generally to software defined storage, andspecifically to a method for dynamically allocating storage resourcesfrom a reserve pool to a software defined storage controller.

BACKGROUND

Software-defined storage (SDS) is a computer data storage technologythat separates storage hardware from the software that manages thestorage infrastructure. Software managing a software-defined storageenvironment may also provide policy management for features such asdeduplication, replication, thin provisioning, snapshots and backup. Bydefinition, SDS software is separate from the hardware it is managing,and can be implemented via appliances over a traditional Storage AreaNetwork (SAN), or implemented as part of a scale-out Network-AttachedStorage (NAS) solution, or as the basis of an Object-based storagesolution.

The description above is presented as a general overview of related artin this field and should not be construed as an admission that any ofthe information it contains constitutes prior art against the presentpatent application.

SUMMARY

There is provided, in accordance with an embodiment of the presentinvention a method, including assigning multiple storage resources to areserve pool, defining one or more storage policy parameters,initializing a software defined storage (SDS) controller, allocating,from the reserve pool, one or more of the storage resources to the SDScontroller, monitoring a current state of the SDS controller, and upondetecting that the state of the SDS controller meets a given storagepolicy parameter, allocating, by a computer, an additional storageresource from the reserve pool to the SDS controller.

There is also provided, in accordance with an embodiment of the presentinvention a data facility, including multiple storage resources, and acomputer configured to assign the multiple storage resources to areserve pool, to define one or more storage policy parameters, toinitialize a software defined storage (SDS) controller, to allocate,from the reserve pool, one or more of the storage resources to the SDScontroller, to monitor a current state of the SDS controller, and upondetecting that the state of the SDS controller meets a given storagepolicy parameter, to allocate an additional storage resource from thereserve pool to the SDS controller.

There is further provided, in accordance with an embodiment of thepresent invention a computer program product, the computer programproduct including a non-transitory computer readable storage mediumhaving computer readable program code embodied therewith, the computerreadable program code including computer readable program codeconfigured to assign multiple storage resources to a reserve pool,computer readable program code configured to define one or more storagepolicy parameters, computer readable program code configured toinitialize a software defined storage (SDS) controller, computerreadable program code configured to allocate, from the reserve pool, oneor more of the storage resources to the SDS controller, computerreadable program code configured to monitor a current state of the SDScontroller, and computer readable program code configured upon detectingthat the state of the SDS controller meets a given storage policyparameter, to allocate, by a computer, an additional storage resourcefrom the reserve pool to the SDS controller.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosure is herein described, by way of example only, withreference to the accompanying drawings, wherein:

FIG. 1 is a block diagram that schematically illustrates a data facilityconfigured to dynamically allocate storage resources from a reserve poolto a software defined storage controller, in accordance with anembodiment of the present invention;

FIG. 2A is a block diagram that schematically illustrates a firstexample of a given storage resource, in accordance with an embodiment ofthe present invention;

FIG. 2B is a block diagram that schematically illustrates a secondexample of a given storage resource, in accordance with an embodiment ofthe present invention;

FIG. 2C is a block diagram that schematically illustrates a thirdexample of a given storage resource, in accordance with an embodiment ofthe present invention; and

FIG. 3 is a flow diagram that schematically illustrates a method ofdynamically allocating storage resources from a reserve pool to asoftware defined storage controller, in accordance with an embodiment ofthe preset invention.

DETAILED DESCRIPTION OF EMBODIMENTS

Enterprise-level storage controllers are typically required to providehigh quality of service (QOS) levels. For example, a storage controllermay have a QOS guaranteeing 99.99999% availability. In operation, theremay be instances when a storage controller needs to add additionalstorage resources (e.g., disks and servers) in order to deal with issuessuch as hardware failures, low storage availability, performancedecreases, and data redundancy requirements. When additional storageresources are needed, a human operator can assign the additionalresources to the storage controller.

Embodiments of the present invention provide systems and methods forautomatically managing a set of software defined storage (SDS)controllers and a separate pool of storage resources. In embodimentsdescribed herein a storage resource (also referred to herein simply as aresource) comprises a physical/logical/virtual storage entity such as aphysical computer system (e.g., a server) a virtual computer system, aset of one or more physical storage devices, or a set of one or morelogical or virtual storage devices.

As described hereinbelow, embodiments of the present invention canidentify when an SDS controller requires one or more additional storageresources and automatically assign the required resources the SDScontroller. The criteria for such decisions can include the SDScontroller's capacity needs, its redundancy state, and the overallredundancy of the data center, as well as user-defined policies.

In some embodiments, a data center can be configured to implementembodiments of the present invention by assigning multiple storageresources to a reserve pool, and defining one or more storage policyconditions. Once the data center is configured, an SDS system can beinitialized by allocating, from the reserve pool, one or more of thestorage resources to the SDS system. At a subsequent time, upondetecting a given storage policy condition being met, an additionalstorage resource can be automatically allocated from the reserve pool tothe SDS system.

Therefore, systems implementing embodiments of the present invention canenhance a given SDS system's capacity, performance and reliability.Additionally, systems implementing embodiments of the present inventioncan effect efficient utilization of hardware resources since (a) anyspare resources can be shared between several clusters of SDScontrollers, and (b) a storage resource in the pool can be shifted, whenrequired, from a first SDS controller to a second SDS controller.Furthermore, systems implementing embodiments of the present inventioncan minimize service times by (a) identifying issues automatically, (b)enabling an automatic or semi-automatic allocation of resources to agiven SDS controller, and (c) enabling policy driven allocation ofstorage resources.

FIG. 1 is a block diagram that schematically illustrates a data facility20, in accordance with an embodiment of the invention. The particularfacility and systems shown in FIG. 1 is presented to facilitate anexplanation of the invention. However, as the skilled artisan willappreciate, the invention can be practiced using other computingenvironments, such as other storage systems with diverse architecturesand capabilities.

Facility 20 comprises a network 22 that couples host computers 24 to asoftware defined storage (SDS) resources management server 26, and to areserve pool 28 of storage resources 30. Examples of storage resources30 include servers and “just a bunch of disks” (JBOD) configurationsthat are described in the descriptions referencing FIGS. 2, 3 and 4hereinbelow. While the configuration in FIG. 1 shows resources 30 at asingle site coupled to a single network 22, the storage resources maylocated at multiple sites and can communicate over multipleinterconnected physical and/or virtual networks.

SDS resources management server 26 comprises a management processor 32and a management memory 34. In operation, processor 32 executes an SDSresource layer 36 that configures and manages SDS controllers 38. Inembodiments described herein, SDS resource layer 36 can manage a givenSDS controller 38 by allocating one or more resources 30 from reservepool 28 to a given SDS controller or deallocating one or more storageresources 30 from the given SDS controller back to the reserve pool.

For a given SDS controller 38, SDS resource layer 36 performs resourceallocations and deallocations based on a current state of the given SDScontroller and SDS policies 40 stored in SDS resource policies 42. Inembodiments of the present invention, a given SDS resource policy 40 istypically defined by the user while the state of the SDS controllerincludes the measured or calculated state of the SDS system. A given SDSresource policy 40 comprises a user-defined condition that directs logicfor allocating a given storage resource 30 to a given SDS controller 38may also be referred to herein as an allocation policy (or allocationcondition) 40, and a given SDS resource policy 40 that directs logic fordeallocating a given storage resource 30 from a given SDS controller 38may also be referred to herein as a deallocation policy (or deallocationcondition) 40.

Additionally, SDS resources management server 26 stores definitions forSDS controllers 38 to an SDS controller configuration and state table44, and stores a current allocation status of each resource 30 to aresource allocation table 46. The current allocation status for a givenstorage resource 30 can indicate if the given storage resource isunallocated (i.e., available for allocation) or is presently allocatedto a given SDS controller 38.

In embodiments described herein, SDS resource layer 36 can allocate anddeallocate storage resources 30 based on the current states of SDScontrollers 28 and SDS policies 40 stored in SDS resource policies 42.Examples of states for a given SDS controller 38 include, but are notlimited to:

-   -   A current storage capacity state, and a predicted (i.e.,        anticipated future) storage capacity.    -   A current performance (e.g., latency and IOPS) state and a        predicted performance.    -   Current network performance (e.g., bandwidth) metrics and a        current network performance state.    -   Spare storage capacity requirements.    -   A redundancy state (e.g., RAID).    -   A health/operational/reliability state of a given resource (or a        subcomponent of the given resource) currently assigned to the        given SDS controller.

As described supra, SDS resource policies 40 comprise user-definedconditions that direct logic for allocating a given storage resource 30to a given SDS controller 38 or for deallocating a given storageresource 30 from a given SDS controller 38. In a first example, a givenpolicy 40 may define a performance goal for a given SDS controller 38.In a second example, a given policy 40 may check if a given SDScontroller 38 has been allocated an upper bound of storage resources 30.In a third example, a given policy 40 can define, for a set of SDScontrollers 38, one or more priorities that can used to weight anallocation decision and thus prioritize resource allocations. Exactsemantics of the policies are implementation dependent, but typically,the SDS resource layer logic can use the SDS controller state and thepolicies in order to reach an allocation/deallocation decision.

In embodiments of the present invention, SDS policies 40 for a given SDScontroller 38 comprise storage parameters (also referred to herein asconditions) such as:

-   -   A capacity goal and/or a capacity quota for a given SDS        controller 38.    -   A reliability goal (e.g., QOS) for a given SDS controller 38.    -   A performance goal for a given SDS controller 38.    -   A performance goal for network 22.    -   A priority weight for the given storage parameter in a given        policy 40.    -   A maximum number (e.g., 15) of storage resources 30 that can be        allocated to a given SDS controller 38.

In some embodiments, a given SDS policy may also include one or morerules that define which of the available resources 30 are applicable forthe given SDS controller. For example, a rule may state that all thestorage resources allocated to the given SDS controller may share acommon attribute (e.g., all the storage resources are located in thesame data center).

In operation, SDS resource layer 36 can make an allocation decisionbased on the states of the SDS controllers, the resources, and anyrelevant user-defined policies. For example, the SDS resource layer mayidentify a given SDS controller 38 whose current state indicates thatits performance is below a given policy rule 40 for the given SDScontroller, and assign a given resource 30 to the given SDS controllerin order to improve performance. In an additional example, if there aretwo SDS controllers 38 both requiring additional resources 30, and thereis a scarcity of available resources 30, SDS resource layer 36 can makea decision to move a given resource 30 from a first SDS controller 38 toa second SDS controller 38 because of a given policy 40 which setsdifferent priorities for the first and the second SDS controllers.

In further embodiments, policies 40 can include parameters from the SDScontrollers, priorities defined by the user, a state of the reservepool, and any other available criteria. Additionally, SDS resource layer36 can carry out any decisions defined by a given policy eitherautomatically or semi-automatically (i.e., with user intervention).

FIG. 2A is a block diagram that schematically illustrates a firstexample of a given storage resource 30, FIG. 2B is a block diagram thatschematically illustrates a second example of a given storage resource30, and FIG. 2C is a block diagram that schematically illustrates athird example of a given storage resource 30 in accordance with anembodiment of the present invention. In the examples shown in FIGS.2A-2C, storage resources 30 and their respective components can bedifferentiated by appending a letter to the identifying numeral, so thatthe storage resources comprise storage resources 30A (as shown in FIG.2A), 30B (as shown in FIG. 2B), and 30C (as shown in FIG. 2C).

Each storage resource 30 comprises a computer 50 and one more storagedevices 52 that store data 54. Each computer 50 comprises a resourceprocessor 56 and in the configurations shown in FIGS. 2 and 3, computers50A and 50B comprise a resource memory 58 that stores a cache 60, and aninterface 62. In operation, processor 56 uses cache 60 and interface 62to process I/O requests for data 54 stored on storage devices 52.

Storage devices 52 comprise multiple slow and/or fast access time massstorage devices, herein below assumed to be multiple hard disks. FIGS. 2and 3 show cache 60 coupled to a set of storage devices 52. In someconfigurations, storage devices 52 comprise one or more hard disks, orsolid state drives (SSDs) which can have different performancecharacteristics. In response to an I/O command, a given cache 60, by wayof example, may read or write data at addressable physical locations ofa given storage device 52. In the embodiments shown in FIGS. 2 and 3,cache 60 is able to exercise certain control functions over storagedevices 52. These control functions may alternatively be realized byhardware devices such as disk controllers (not shown), which are linkedto cache 60.

In some embodiments each of storage devices 52 may comprise a logicalstorage device. In storage systems implementing the Small ComputerSystem Interface (SCSI) protocol, the logical storage devices may bereferred to as logical units, or LUNs. While each LUN can be addressedas a single logical unit, the LUN may comprise a combination of highcapacity hard disk drives and/or solid state disk drives.

Interface 62 comprises a software application executed by processor 56and configured to receive and process I/O requests from host computers24. For example, if interface 62 in a first given resource 30 receivesan I/O request comprising a request to read data from a logical blockaddress (LBA) stored on s second given resource 30, the interface canforwards a one or more data requests for the LBA to the second givenresource, and upon receiving the requested data from the second givenresource, the interface forwards the received data (i.e., a result ofthe data request) to the given host computer.

In the configuration shown in FIG. 2B, processor 56B executes ahypervisor 64 from memory 58B, thereby enabling processor 56B to executeinterface 62B (and store cache 60B) in one or more virtual machineinstances 66. In embodiments where processors 56 implement virtualmachines 66, facility 20 can implement SDS controllers 38 in adistributed set of the virtual machines. In some embodiments, computer50B can implement a virtual storage device that can be presented as agiven storage device 52 within virtual machine 66, but is implemented bythe hypervisor as a different type of storage entity (e.g., a file).

Storage resource 30C (FIG. 2C) comprises a JBOD server comprising one ormore JBOD pools 68, each of the JBOD pools comprising multiple storagedevices 52C. In operation, SDS resource layer 36 can allocate a givenJBOD pool 68 to a given SDS controller 38, or deallocate a given JBODpool 68 from the given SDS controller. While the example in FIG. 2Cshown storage resource 30C configured as a JBOD server, any otherconfiguration for a storage resource 30 that can manage one or more setsof storage devices 52 that can be allocated/deallocated is considered tobe within the spirit and scope of the present invention.

Additionally, while the configuration in FIG. 1 shows SDS resourcesmanagement server 26 allocating and deallocating storage resources 30based on policies 40, the controlling logic (and the functionality ofembodiments described herein) for allocating and deallocating thestorage resources can be either centralized on a single storage resource30 or distributed among multiple storage resources 30. Therefore, thefunctionality of SDS resources management server 26 can be implementedin one or more SDS controllers 38 that are configured to allocate and/ordeallocate storage resources 30. In some embodiments, the functionalityof SDS resources management server 26 can also be completely distributedso that each SDS controller 38 is also making allocation decisions foritself based on a common state of the SDS controllers and policies 40.

In embodiments of the present invention, the configuration of storageresources 30A and 30B (i.e., computers 50A, 50B and their respectivestorage devices 52A and 52B) may also be referred to herein as storageservers. Likewise, storage resource 30C may also be referred to as a setof storage devices 52. In the configuration shown in FIG. 3C, each JBODpool 68 (i.e., each set of the storage devices) can be allocatedseparately as a distinct storage resource 30.

Processors 32 and 56 comprise general-purpose central processing units(CPU) or special-purpose embedded processors, which are programmed insoftware or firmware to carry out the functions described herein. Thesoftware may be downloaded to SDS resources management server 26 andcomputers 50 in electronic form, over a network, for example, or it maybe provided on non-transitory tangible media, such as optical, magneticor electronic memory media. Alternatively, some or all of the functionsof the processors may be carried out by dedicated or programmabledigital hardware components, or using a combination of hardware andsoftware elements.

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

These computer readable program instructions may also be stored in acomputer readable storage medium that can direct a computer, aprogrammable data processing apparatus, and/or other devices to functionin a particular manner, such that the computer readable storage mediumhaving instructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

Storage Resource Management

FIG. 3 is a flow diagram that schematically illustrates a method ofpolicy driven allocation and deallocation of storage resources 30, inaccordance with an embodiment of the current invention. In aconfiguration step 70, processor 32 configures reserve pool 28comprising storage resources 30, and a definition step 72, themanagement processor stores storage policy conditions 40 to SDS resourcepolicies 42, thereby defining the allocation and deallocation conditionsfor facility 20. Processor 32 can retrieve policy parameters 40 from afile (not shown) or receive the policy parameters as input from a user.

In an initialization step 74, processor 32 initializes (i.e., defines) agiven SDS controller 38 by allocating one or more storage resources 30to the given SDS controller, and in a monitoring step 76, the managementprocessor starts using SDS policies 40 to monitor a state of the givenSDS controller. In the flow diagram shown in FIG. 3 processor 32monitors the given SDS controller by performing steps 78-84 describedhereinbelow.

In a first condition step 78, if processor 32 detects that a currentstate of the given SDS controller meets a given allocation condition 40,then in an allocation step 80, the management processor allocates, fromreserve pool 28, a given storage resource 30 to the given SDScontroller. For example, the given SDS controller may be running out ofstorage space, or one of the storage devices in the given SDS controllermay be starting to fail. In some embodiments, the decision in step 78may be a relative decision. SDS resource layer 36 can make a relativedecision when the decision is based on the relative value of acalculated evaluation function for all SDS controllers 38.

In a second condition step 82, if processor 32 detects that the currentstate of the given SDS controller meets a given deallocation condition40, then in an deallocation step 84 the management processor deallocatesa given storage resource 30 from the given SDS controller, returns thedeallocated storage resource to reserve pool 28, and the methodcontinues with step 78. For example, if the given SDS resourcepreviously had a RAID 1 configuration and now is reconfigured to have nodata redundancy, management processor 32 may be able to deallocate oneor more storage resources 30 from the given SDS controller.

Returning to step 82, if processor 32 does not detect that the currentstate of the given SDS controller meets a given deallocation condition40, then the method continues with step 78. Returning to step 78, ifprocessor 32 does not detect that the current state of the given SDScontroller meets a given allocation condition 40, then the methodcontinues with step 82.

The flowchart(s) and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

It will be appreciated that the embodiments described above are cited byway of example, and that the present invention is not limited to whathas been particularly shown and described hereinabove. Rather, the scopeof the present invention includes both combinations and subcombinationsof the various features described hereinabove, as well as variations andmodifications thereof which would occur to persons skilled in the artupon reading the foregoing description and which are not disclosed inthe prior art.

1. A method, comprising: assigning multiple storage resources to areserve pool; defining one or more storage policy parameters;initializing a software defined storage (SDS) controller; allocating,from the reserve pool, one or more of the storage resources to the SDScontroller; monitoring a current state of the SDS controller; and upondetecting that the state of the SDS controller meets a given storagepolicy parameter, allocating, by a computer, an additional storageresource from the reserve pool to the SDS controller.
 2. The methodaccording to claim 1, wherein each of the multiple storage resources isselected from a list consisting of a storage server and a set of storagedevices.
 3. The method according to claim 1, wherein the state isselected from a list consisting of a capacity state, a capacityprediction, a performance state, a performance prediction, networkperformance metrics, a network performance state, a health state, aredundancy state and a reliability state.
 4. The method according toclaim 1, wherein the given storage parameter is selected from a listconsisting of a capacity goal, a capacity quota, a reliability goal, anetwork performance goal and a priority weight.
 5. The method accordingto claim 1, wherein the given storage parameter defines an availabilityof a given storage resource to the SDS controller.
 6. The methodaccording to claim 1, wherein the given storage policy parametercomprises a first given storage policy parameter, and comprisingreleasing, from the given SDS controller, a given storage resource tothe storage pool upon the state of the SDS controller meeting a secondstorage policy parameter.
 7. The method according to claim 1, whereinthe computer is selected from a list consisting of a policy server andone or more of the SDS controllers.
 8. A data facility, comprising:multiple storage resources; and a computer configured: to assign themultiple storage resources to a reserve pool; to define one or morestorage policy parameters; to initialize a software defined storage(SDS) controller; to allocate, from the reserve pool, one or more of thestorage resources to the SDS controller; to monitor a current state ofthe SDS controller; and upon detecting that the state of the SDScontroller meets a given storage policy parameter, to allocate anadditional storage resource from the reserve pool to the SDS controller.9. The data facility according to claim 8, wherein each of the multiplestorage resources is selected from a list consisting of a storage serverand a set of storage devices.
 10. The data facility according to claim8, wherein the state is selected from a list consisting of a capacitystate, a capacity prediction, a performance state, a performanceprediction, network performance metrics, a network performance state, ahealth state, a redundancy state and a reliability state.
 11. The datafacility according to claim 8, wherein the given storage parameter isselected from a list consisting of a capacity goal, a capacity quota, areliability goal, a network performance goal and a priority weight. 12.The data facility according to claim 8, wherein the given storageparameter defines an availability of a given storage resource to the SDScontroller.
 13. The data facility according to claim 8, wherein thegiven storage policy parameter comprises a first given storage policyparameter, and wherein the computer is configured to release, from thegiven SDS controller, a given storage resource to the storage pool uponthe state of the SDS controller meeting a second storage policyparameter.
 14. The data facility according to claim 8, wherein thecomputer comprises one or more of the SDS controllers.
 15. A computerprogram product, the computer program product comprising: anon-transitory computer readable storage medium having computer readableprogram code embodied therewith, the computer readable program codecomprising: computer readable program code configured to assign multiplestorage resources to a reserve pool; computer readable program codeconfigured to define one or more storage policy parameters; computerreadable program code configured to initialize a software definedstorage (SDS) controller; computer readable program code configured toallocate, from the reserve pool, one or more of the storage resources tothe SDS controller; computer readable program code configured to monitora current state of the SDS controller; and computer readable programcode configured upon detecting that the state of the SDS controllermeets a given storage policy parameter, to allocate, by a computer, anadditional storage resource from the reserve pool to the SDS controller.16. The computer program product according to claim 15, wherein each ofthe multiple storage resources is selected from a list consisting of astorage server and a set of storage devices.
 17. The computer programproduct according to claim 15, wherein the state is selected from a listconsisting of a capacity state, a capacity prediction, a performancestate, a performance prediction, network performance metrics, a networkperformance state, a health state, a redundancy state and a reliabilitystate.
 18. The computer program product according to claim 15, whereinthe given storage parameter is selected from a list consisting of acapacity goal, a capacity quota, a reliability goal, a networkperformance goal and a priority weight.
 19. The computer program productaccording to claim 15, the given storage parameter defines anavailability of a given storage resource to the SDS controller.
 20. Thecomputer program product according to claim 15, wherein the givenstorage policy parameter comprises a first given storage policyparameter, and comprising computer readable program code configured torelease, from the given SDS controller, a given storage resource to thestorage pool upon the state of the SDS controller meeting a secondstorage policy parameter.